home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / datatypes / debox_dt / source / classbase.h < prev    next >
C/C++ Source or Header  |  1996-04-07  |  6KB  |  167 lines

  1.  
  2. /******************************************************************************
  3.  *
  4.  * Flowerpower's DeBox Datatype
  5.  *
  6.  * Written by Christian Buchner and David N. Junod
  7.  *
  8.  ******************************************************************************
  9.  * classbase.h
  10.  *
  11.  */
  12.  
  13. #include <dos/dos.h>
  14. #include <dos/dosextens.h>
  15. #include <exec/types.h>
  16. #include <exec/ports.h>
  17. #include <exec/memory.h>
  18. #include <exec/lists.h>
  19. #include <exec/semaphores.h>
  20. #include <exec/execbase.h>
  21. #include <intuition/classes.h>
  22. #include <intuition/classusr.h>
  23. #include <intuition/cghooks.h>
  24. #include <intuition/gadgetclass.h>
  25. #include <graphics/gfx.h>
  26. #include <graphics/text.h>
  27. #include <graphics/view.h>
  28. #include <libraries/iffparse.h>
  29. #include <datatypes/datatypes.h>
  30. #include <datatypes/datatypesclass.h>
  31. #include <datatypes/pictureclass.h>
  32. #include <string.h>
  33. #include <dos.h>
  34.  
  35. #include <clib/macros.h>
  36. #include <clib/dos_protos.h>
  37. #include <clib/exec_protos.h>
  38. #include <clib/intuition_protos.h>
  39. #include <clib/iffparse_protos.h>
  40. #include <clib/graphics_protos.h>
  41. #include <clib/utility_protos.h>
  42. #include <clib/datatypes_protos.h>
  43. #include <clib/dtclass_protos.h>
  44. #include <clib/alib_protos.h>
  45.  
  46. #include <pragmas/dos_pragmas.h>
  47. #include <pragmas/exec_pragmas.h>
  48. #include <pragmas/intuition_pragmas.h>
  49. #include <pragmas/iffparse_pragmas.h>
  50. #include <pragmas/graphics_pragmas.h>
  51. #include <pragmas/utility_pragmas.h>
  52. #include <pragmas/datatypes_pragmas.h>
  53. #include <pragmas/dtclass_pragmas.h>
  54.  
  55. /*****************************************************************************/
  56.  
  57. struct DeBoxChunk
  58. {
  59.     UBYTE checksum;            /* header checksum */
  60.     UBYTE headermark;        /* always 1 */
  61.     UWORD dontknow02;        /* varies */
  62.     UBYTE flags;            /* some flags */
  63.     UBYTE crunchmethod;        /* the crunch method (0-15) */
  64.     UBYTE destinplane;        /* destination bit plane number */
  65.     UBYTE referenceplane;    /* reference bit plane number   */
  66.     ULONG decrunched_len;    /* The decrunched length */
  67.     ULONG chunk_len;        /* The chunk length */
  68. };
  69.  
  70. #define FLGB_ANOTHER_CHUNK_FOLLOWS   7
  71. #define FLGB_USE_EXTRA_BUFFER        6
  72. #define FLGB_XOR_REFERENCE_INTO_DEST 5
  73. #define FLGB_SUBTRACT_ONE_BYTE       4
  74.  
  75. #define FLGF_ANOTHER_CHUNK_FOLLOWS   (1<<7)
  76. #define FLGF_USE_EXTRA_BUFFER        (1<<6)
  77. #define FLGF_XOR_REFERENCE_INTO_DEST (1<<5)
  78. #define FLGF_SUBTRACT_ONE_BYTE       (1<<4)
  79.  
  80. #define CRUNCHMETHOD_PLAIN  0
  81. #define CRUNCHMETHOD_1      1
  82. #define CRUNCHMETHOD_2      2
  83. #define CRUNCHMETHOD_FILL   3
  84. #define CRUNCHMETHOD_4      4
  85. #define CRUNCHMETHOD_5      5
  86.  
  87. struct DeBoxInfo
  88. {
  89.     ULONG chunk_bytes;        /* number of bytes in this chunk */
  90.     ULONG palette_offset;    /* offset to palette UWORDs */
  91.     ULONG strange_offset;    /* offset to strange structs */
  92.     UWORD width;            /* image width */
  93.     UWORD height;            /* image height */
  94.     UBYTE depth;            /* image depth */
  95.     UBYTE dontknow11;        /* varies */
  96.     UWORD modeid;            /* screen mode ID */
  97.     UBYTE numcolors;        /* number of color registers */
  98.     UBYTE numstrange;        /* number of strange structures to follow */
  99.     UBYTE dontknow16;        /* varies */
  100.     UBYTE dontknow17;        /* varies */
  101.     ULONG dontknow18;        /* always 0 */
  102.     /* Here follows the palette: numcolors UWORDS */
  103.     /* Here follow numstrange strange structures */
  104. };
  105.  
  106. /*****************************************************************************/
  107.  
  108. extern UBYTE __far LibName[];
  109.  
  110. /*****************************************************************************/
  111.  
  112. struct ClassBase
  113. {
  114.     struct Library             cb_Lib;
  115.     UWORD                     cb_UsageCnt;
  116.     struct Library            *cb_SysBase;
  117.     struct Library            *cb_DOSBase;
  118.     struct Library            *cb_IntuitionBase;
  119.     struct Library            *cb_GfxBase;
  120.     struct Library            *cb_UtilityBase;
  121.     struct Library            *cb_IFFParseBase;
  122.     struct Library            *cb_DataTypesBase;
  123.     struct Library            *cb_SuperClassBase;
  124.     BPTR                     cb_SegList;
  125.     struct SignalSemaphore     cb_Lock;        /* Access lock */
  126.     Class                    *cb_Class;
  127. };
  128.  
  129. /*****************************************************************************/
  130.  
  131. #define SysBase            cb->cb_SysBase
  132. #define DOSBase            cb->cb_DOSBase
  133. #define UtilityBase        cb->cb_UtilityBase
  134. #define    IntuitionBase    cb->cb_IntuitionBase
  135. #define    IFFParseBase    cb->cb_IFFParseBase
  136. #define    GfxBase            cb->cb_GfxBase
  137. #define    DataTypesBase    cb->cb_DataTypesBase
  138.  
  139. /*****************************************************************************/
  140.  
  141. /* classbase.c */
  142. Class *__asm ObtainClassEngine ( register __a6 struct ClassBase *cb );
  143. struct Library *__asm LibInit ( register __d0 struct ClassBase *cb , register __a0 BPTR seglist , register __a6 struct Library *sysbase );
  144. LONG __asm LibOpen ( register __a6 struct ClassBase *cb );
  145. LONG __asm LibClose ( register __a6 struct ClassBase *cb );
  146. LONG __asm LibExpunge ( register __a6 struct ClassBase *cb );
  147. void __asm LibReserved( register __a6 struct ClassBase *cb );
  148.  
  149. /* dispatch.c */
  150. ULONG setdtattrs ( struct ClassBase *cb , Object *o , ULONG data , ...);
  151. ULONG getdtattrs ( struct ClassBase *cb , Object *o , ULONG data , ...);
  152. Class *initClass ( struct ClassBase *cb );
  153. ULONG __asm Dispatch ( register __a0 Class *cl , register __a2 Object *o , register __a1 Msg msg );
  154. BOOL __asm GetPicture ( register __a6 struct ClassBase *cb , register __a0 Class *cl , register __a2 Object *o , register __a1 struct TagItem *attrs );
  155. BOOL DecrunchBitmap(struct ClassBase *cb, Object *o, UBYTE *buffer, ULONG size, struct BitMap **bm, struct BitMapHeader *bmhd, ULONG *modeid);
  156.  
  157. /* AsmSupport.asm */
  158. void __asm XOR_Memory(register __a1 UBYTE *Source, register __a0 UBYTE *Destin, register __d0 Bytes);
  159. ULONG __asm Method_1(register __a1 UBYTE *SourceData, register __d7 SourceSize, register __a2 UBYTE *Reference, register __a3 UBYTE *Destin, register __d6 DestinSize);
  160. ULONG __asm Method_2(register __a1 UBYTE *SourceData, register __d7 SourceSize, register __a2 UBYTE *Reference, register __a3 UBYTE *Destin, register __d6 DestinSize);
  161. ULONG __asm Method_4(register __a1 UBYTE *SourceData, register __d7 SourceSize, register __a2 UBYTE *Reference, register __a3 UBYTE *Destin, register __d6 DestinSize);
  162. ULONG __asm Method_5(register __a1 UBYTE *SourceData, register __d7 SourceSize, register __a2 UBYTE *Reference, register __a3 UBYTE *Destin, register __d6 DestinSize);
  163.  
  164. /* DeBoxCRC */
  165.  
  166. BOOL __asm DeBoxCRC(register __a0 struct DeBoxChunk *chunk);
  167.